package com.cy.store.mapper;

import com.cy.store.entity.Address;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;

@Repository
/**
 * 表示收货地址持久层接口
 */
public interface AddressMapper {

    /**
     * 插入用户的收货地址的数据
     *
     * @param address 收货地址数据
     * @return 受影响的行数
     */
    Integer insert(Address address);

    /**
     * 根据用户id查询用户收货地址数量
     *
     * @param uid 用户id
     * @return 当前用户收获地址的数量
     */
    Integer countByUid(Integer uid);

    /**
     * 根据用户的id查询用户的收获地址数据
     *
     * @param uid
     * @return
     */
    List<Address> findByUid(Integer uid);

    /**
     * 根据aid查询收货地址数据
     *
     * @param aid
     * @return
     */
    Address findByAid(Integer aid);

    /**
     * 更新所有地址设置为非默认
     *
     * @param uid
     * @return
     */
    Integer updateNonDefault(Integer uid);

    /**
     * 更新设置默认的方法
     *
     * @param aid
     * @return
     */
    Integer updateDefaultByAid(
            @Param("aid") Integer aid,
            @Param("modifiedUser") String modifiedUser,
            @Param("modifiedTime") Date modifiedTime);

    /**
     * 删除某条地址
     *
     * @param aid
     * @return
     */
    Integer deleteByAid(Integer aid);

    /**
     * 查询用户最后一条修改的地址
     *
     * @param uid
     * @return
     */
    Address findLastModified(Integer uid);

    /**
     * 修改地址
     *
     * @param address
     * @return
     */
    Integer updateAddress(Address address);
}
